home *** CD-ROM | disk | FTP | other *** search
- 0 REM SET SPRITES(AUG 25/84) :
- 1 :
- 2 REM 6 STATEMENTS, 0 FUNCTIONS
- 3 :
- 4 REM KEYWORD CHARACTERS:27
- 5 :
- 6 REM KEYWORD ROUTINE LINE SER#
- 7 REM S/COLSPR COLSP 3530 031
- 8 REM S/SSPR SSP 3550 032
- 9 REM S/CSPR CSP 3560 033
- 10 REM S/XSPR XSP 3574 034
- 11 REM S/YSPR YSP 3628 035
- 12 REM S/XYSPR XYSP 3656 036
- 13 :
- 14 REM U/CHKSPR(3664/037)
- 15 REM U/RASCHK(3676/038)
- 16 REM D/POWERS(3694/039)
- 17 :
- 18 REM============================
- 19 :
- 108 .ASC"COLSP[210]SSP[210]CSP[210]"
- 109 .ASC"XSP[210]YSP[210]XYSP[210]"
- 1108 .WORD COLSPR-1,SSP-1,CSP-1
- 1109 .WORD XSP-1,YSP-1,XYSP-1
- 3530 COLSP JSR CHS1 ;GET SPRITE NUMBER
- 3532 TXA
- 3534 PHA ;SAVE IT
- 3536 JSR $V7F1 ;CHECK COMMA AND
- 3538 PLA ;GET COLOUR
- 3540 TAY
- 3542 TXA
- 3544 STA $D027,Y ;POKE COLOUR
- 3546 RTS
- 3548 ;
- 3550 SSP JSR CHS1 ;GET SPRITE NUMBER
- 3552 LDA POWERS,X ;SET THE BIT
- 3554 ORA $D015 ;OR SPRITE ENABLE
- 3556 BNE CSP1 ;RGSTR,TURN ON
- 3558 ;
- 3560 CSP JSR CHS1 ;GET SPRITE NUMBER
- 3562 LDA POWERS,X ;SET THE BIT
- 3564 EOR #$FF ;MASK IT OUT
- 3566 AND $D015 ;AND SPRITE ENABLE
- 3568 CSP1 STA $D015 ;RGST,TURN OFF
- 3570 RTS
- 3572 ;
- 3574 XSP JSR CHS1 ;GET SPRITE NUMBER
- 3576 STX T3 ;SAVE IT
- 3578 JSR $AEFD ;CHECK FOR COMMA
- 3580 JSR $AD8A ;GET X POSITION
- 3582 JSR $B7F7 ;CONVERT TO INTEGER
- 3584 LDA $15 ;GET HIGH BYTE
- 3586 CMP #2 ;BRANCH IF
- 3588 BCS XS3 ;TOO HIGH
- 3590 LDX T3 ;GET SPRITE NUMBER
- 3592 ROR ;PUT MSB IN CARRY
- 3594 LDA POWERS,X ;SET THE BIT
- 3596 BCC XS1 ;BRANCH ON 0 MSB
- 3598 ORA $D010 ;OR MSB REGISTER
- 3600 BCS XS2 ;SKIP
- 3602 EOR #$FF ;MASK THE BIT
- 3604 AND $D010 ;CLEAR THE BIT
- 3606 TAY ;SAVE MSB
- 3608 TXA ;SPRITE NUMBER
- 3610 ASL ;DOUBLE IT
- 3612 TAX ;USE AS INDEX
- 3614 LDA $14 ;GET X LOW BYTE
- 3616 JSR RASCHK ;WAIT FOR RASTER
- 3618 STY $D010 ;WRITE MSB
- 3620 STA $D000,X ;WRITE LOW BYTE
- 3622 RTS
- 3624 SX3 JMP $B248 ;ILLEGAL QUANTITY
- 3626 ;
- 3628 YSP JSR CHS1 ;GET SPRITE NUMBER
- 3630 YS1 TXA ;DOUBLE IT
- 3632 ASL
- 3634 PHA ;SET IT ASIDE
- 3636 JSR $B7F1 ;COMMA, Y-POSITION
- 3638 TXA ;MOVE IT TO .Y
- 3640 TAY
- 3642 PLA ;GET 2*(SPRITE#)
- 3644 TAX ;USE IT AS INDEX FOR
- 3646 TYA ;Y-POSITION
- 3648 JSR RASCHK ;WAIT FOR RASTER
- 3650 STA $D001,X ;WRITE POSITION
- 3652 RTS
- 3654 ;
- 3656 XYSP JSR XSP ;WRITE X-POSITION
- 3658 LDX T3 ;GET SPRITE #
- 3660 BPL YS1 ;WRITE Y-POSITION
- 3662 ;
- 3664 CHKSPR JSR $73 ;BUMP CHRGET PTR
- 3666 CHS1 JSR $B79E ;GET SPRITE NUMBER
- 3668 CPX #8 ;MUST BE UNDER 8
- 3670 BCS XS3
- 3672 RTS
- 3674 ;
- 3676 RASCHK PHA ;STORE ACCUMULATOR
- 3678 RAS1 LDA $D012 ;READ RASTER LINE
- 3680 SBC $D001,X ;SUBTRACT SPRITE-Y
- 3682 BCC RAS2
- 3684 CMP #$2B ;WAIT TIL
- 3686 BCC RAS1 ;CLEAR OF SPRITE
- 3688 RAS2 PLA
- 3690 RTS
- 3692 ;
- 3694 POWERS .BYTE 1,2,4,8,16,32,64,128
- 3696 ;
-